A data center is a specialized facility that houses web sites, provides data serving and backup, and/or other network-based services for subscribers. For example, data centers are often used to provide software as a service (SaaS), platform as a service (PaaS), and/or infrastructure as a service (IaaS), which are generally referred to as cloud computing services. A relatively simple form of data center generally includes a single facility that hosts infrastructure equipment, such as networking and storage systems, redundant power supplies, and environmental controls. Cloud services may be provided by multiple geographically dispersed data centers.
Computing devices of data centers provide various services to client devices. Typically, these computing devices are configured to execute a hypervisor, which executes various operating systems (typically referred to as “guest operating systems,”) and one or more applications execute over each of the guest operating systems. These applications include applications for providing services to client devices, such as data storage and retrieval services. Collectively, one guest operating system and the applications executing over that guest operating system are referred to as a “virtual machine.” Thus, the hypervisor of a computing device may execute a plurality of virtual machines. Moreover, a data center may include one or more computing devices, each executing a plurality of virtual machines.
In some cases, virtual machines hosted on computing devices of separate data centers may be communicatively coupled, e.g., via a virtual private network (VPN). In this manner, client devices can connect to the VPN and access any of the virtual machines connected to the VPN. Thus, data stored to the VPN may in fact be stored in separate hardware devices at disparate physical locations, e.g., within separate data centers.
Administrators of the data centers may wish to move virtual machines from one data center to another. For example, administrators may move a computing device hosting the virtual machines to perform maintenance on the computing device. As another example, administrators may move a virtual machine to a computing device that is closest to client devices that use services provided by the virtual machine most often. Typically, moving a virtual machine from one data center or another, or from one computing device to another, requires saving a state of an operating system of the virtual machine, then restarting the virtual machine from the saved state on the destination computing device.